/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"0C8937BE-129F-4C79-9334-D76EDE330F2E",variableType:4}
 */
var gFacturaPendienteCae = 10;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"C0680174-9A54-40D0-B0DA-36DDFE08938E"}
 */
var gArchEntrada = 'c:/factura_electronica/Entrada/entrada.txt';

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"D8DBDA29-AF90-404E-8FEE-DFA159310053"}
 */
var gCae = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"7571BD05-40BB-4C10-AE6A-3879614B5907"}
 */
var gEstadoServicio = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"36E5BD8F-099F-4701-BDCB-063A08177AC5"}
 */
var gFechaVtoCae = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"D2270A05-B606-4B0C-B00A-CBE8F6368BAC"}
 */
var gLetra = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"0556DEB1-2138-4551-BD13-D007FECADA67"}
 */
var gMensajeError = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"461E6BF4-5C92-4410-8E9F-9D4D4931878B"}
 */
var gMensajeLogfile = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"51AE3958-8879-42B1-A827-A10BA0580646",variableType:4}
 */
var gNroCbte = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"7BC41256-40F5-4CAC-80E0-7F88FFC34099",variableType:4}
 */
var gSenialStop = 0;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"CB93122A-1882-4F59-AED4-98B67F4437C0"}
 */
var gSucursal = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"48B7C646-D101-43D2-BA9E-FFD2FEE3942B"}
 */
var gTipo_doc = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"473464DC-D40F-48F8-8970-C4F5E6004723",variableType:4}
 */
var gTipoCbte = null;

/**
 * @properties={typeid:24,uuid:"64EB6B07-8597-4471-83EE-857942C58CC5"}
 */
function pruebaRece() {
	globals.gArchEntrada 	= guserv_to_uservs.elec_arch_entrada
	var $arch_salida 		= guserv_to_uservs.elec_arch_salida
	
	// tomar lista de comprobantes a procesar (FC NC ND con un estado determinado)
	var $facturas = buscarFacturas()
	
	for (var i = 1 ; i <= $facturas.getMaxRowIndex() ; i++)
	{
		// debe generar  entrada   (cabecera, tributo,iva)
		var $factura = $facturas.getRowAsArray(i)
		var $linea = globals.procesarComprobante($factura)
		if ($linea == -1)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Error al crear el archivo','OK')
			return 1
		}
		//Ejecuto el rece.exe y espero el resultado
		application.executeProgram(guserv_to_uservs.elec_rece_bat + '/rece1.bat',[guserv_to_uservs.elec_rece_bat, guserv_to_uservs.elec_rece_ini, guserv_to_uservs.elec_log])
		var $arch_salida = plugins.file.convertToJSFile($arch_salida)

		// copia salida a salidas-recibidas
		var $comp = 'FC'
		if ($factura[30] == 2)
			$comp = 'NC'
		else
			if ($factura[30] == 3)
				$comp = 'ND'
		var $arch_destino = $comp + '_' + utils.numberFormat($factura[3],'0000') + '_' + $factura[29] + '_' + utils.numberFormat($factura[4],'00000000')

		var $destino = guserv_to_uservs.elec_salidas_recibidas + '/' + $arch_destino
		plugins.file.copyFile($arch_salida,$destino)
		
		var $rta = utils.stringTrim(plugins.file.readTXTFile($arch_salida).substr(1200, 1000))
		if ($rta)
		{
			$rta = '\nError : ' + $rta + '\n Motivo: ' + utils.stringTrim(plugins.file.readTXTFile($arch_salida).substr(194, 1000))
			globals.gMensajeError   = $arch_destino + $rta
			forms.inicial.fLog		= globals.gMensajeError + '\n' + forms.inicial.fLog
			globals.gMensajeLogfile = plugins.file.readTXTFile(guserv_to_uservs.elec_log)
			globals.gGrabarLog($factura[2], $factura[4], null, $arch_destino, globals.gMensajeError, globals.gMensajeLogfile, null, $factura[3])
		}
		
		// Analiza si la respuesta es correcta
		if ($arch_salida.size() > 194 && globals.verificar_cae($arch_salida) == 0)
		{
			$rta = ' - Aprobado con CAE: ' + utils.stringTrim(plugins.file.readTXTFile($arch_salida).substr(171, 14))
			globals.gMensajeError   = $arch_destino + $rta
			forms.inicial.fLog		= globals.gMensajeError + '\n' + forms.inicial.fLog
			globals.gMensajeLogfile = plugins.file.readTXTFile(guserv_to_uservs.elec_log)
			
			var $nombre_pdf 	= guserv_to_uservs.elec_facturas_hechas + '/'+ $arch_destino + ".pdf"
			
			globals.gTipo_doc 	= utils.numberFormat($factura[2],'00')
			globals.gSucursal 	= utils.numberFormat($factura[3],'0000')
			var $cod_completo 	= globals.gCodigo_afip()
			if ($cod_completo != 1)
			{
				var $fac_cab_id 	= $factura[31]
				globals.grabarCabecera($fac_cab_id, globals.gCae, $cod_completo.toString(), $nombre_pdf, 1, globals.gFechaVtoCae)
				if (guserv_to_uservs.elec_codigo_imprime)
				{
					try
					{
						eval(guserv_to_uservs.elec_codigo_imprime)
					}
					catch(e)
					{
						globals.gMensajeError   = $arch_destino + ' - Error al generar PDF: '+ e
						forms.inicial.fLog		= globals.gMensajeError + '\n' + forms.inicial.fLog
					}
				}
				globals.gGrabarLog($factura[2], $factura[4], globals.gCae, $arch_destino, globals.gMensajeError, globals.gMensajeLogfile, globals.gFechaVtoCae, $factura[3])
				// borra entrada y salida de la interfase
				plugins.file.deleteFile(globals.gArchEntrada)
				plugins.file.deleteFile($arch_salida)
				// borra logfile
				plugins.file.deleteFile(guserv_to_uservs.elec_log)
			}
			else
			{
				globals.gMensajeError   = $arch_destino + ' - Error al guardar datos. CAE válido'
				forms.inicial.fLog		= globals.gMensajeError + '\n' + forms.inicial.fLog
				globals.gGrabarLog($factura[2], $factura[4], globals.gCae, $arch_destino, globals.gMensajeError, globals.gMensajeLogfile, globals.gFechaVtoCae, $factura[3])
			}
		}
		else
		{
			var $msj = ''
			// error longitud o verificacion CAE
			if ($arch_salida.size() <= 194 )
			{
				$msj = 'Error Longitud archivo de salida = ' + $arch_salida.size()
				globals.gMensajeError   = $arch_destino + $msj
				forms.inicial.fLog		= globals.gMensajeError + '\n' + forms.inicial.fLog
				globals.gGrabarLog($factura[2], $factura[4], null, $arch_destino, globals.gMensajeError, globals.gMensajeLogfile, null, $factura[3])
			}
			else
			{
				$msj = 'No se obtuvo CAE'
				globals.gMensajeError   = $arch_destino + $msj
				forms.inicial.fLog		= globals.gMensajeError + '\n' + forms.inicial.fLog
				globals.gGrabarLog($factura[2], $factura[4], null, $arch_destino, globals.gMensajeError, globals.gMensajeLogfile, null, $factura[3])
			}
			// para proceso
			if (guserv_to_uservs.mail_host && guserv_to_uservs.mail_puerto && guserv_to_uservs.email && guserv_to_uservs.mail_pass)
			{
				var $host 		= guserv_to_uservs.mail_host
				var $puerto 	= guserv_to_uservs.mail_puerto
				var $email 		= guserv_to_uservs.email
				var $from 		= guserv_to_uservs.descripcion
				var $pass 		= guserv_to_uservs.mail_pass
				var $asunto 	= 'Factura Electrónica - Servicio Parado'
				var $mensaje	= 'El servicio de Factura Electrónica se ha detenido por el siguiente error\n' + $msj
				
				for (var i = 1; i <= guserv_to_userv_contactos.getSize() ; i++)
				{
					/** @type {JSRecord<db:/fwk_navigation_infocom/userv_contactos>}*/
					var $rcd 		= guserv_to_userv_contactos.getRecord(i) 
					var $destino 	= $rcd.mail
					if (!globals.mandarMail($host, $puerto, $email, $from, $pass,1,$destino, $asunto, $mensaje, null))
						application.output(plugins.mail.getLastSendMailExceptionMsg())
				}
			}
			
			globals.DIALOGS.showWarningDialog('Aviso',$msj,'OK')
			globals.gSenialStop = 1
			
			return 1
		}
	}
	return 0
}

/**
 * @param {Number} cabecera_id
 * @param {String} cae
 * @param {String} cod_barras
 * @param {String} nombre_pdf
 * @param {Number} estado
 * @param {String} fecha_venc_cae
 * 
 * @properties={typeid:24,uuid:"70CF8A86-C8DE-4EB6-B736-BC3929768E22"}
 */
function grabarCabecera(cabecera_id, cae, cod_barras, nombre_pdf, estado, fecha_venc_cae)
{
	var $fecha = new Date(fecha_venc_cae.substr(0,4)*1, fecha_venc_cae.substr(4,2)*1,fecha_venc_cae.substr(6,2)*1)
	var $sql = 'UPDATE fac_cabecera '+ 
				'SET '+
				'codigo_afip = ?, '+ 
				'cai = ?, '+
				'fecha_venc_cae = ?, '+
				'fac_estado = ?, '+
				'path_pdf = ? '+
				'WHERE cabecera_id = ?'
	var $args = [cod_barras, cae, $fecha, estado, nombre_pdf, cabecera_id]
	plugins.rawSQL.executeSQL('infocom','fac_cabecera',$sql,$args)
}

/**
 * @properties={typeid:24,uuid:"A6C4ACCE-A5E4-416D-AC08-41DA4DCBC9B2"}
 */
function buscarFacturas()
{
	var $sql 	= 'SELECT 0,fecha, afip.codigo, '+
							'sucursal, nro_factura, '+
							'nro_factura, concepto.codigo_afip, '+
							'cli.tipo_identificacion, cli.cuit, '+
							'total, 0, '+
							'neto_no_gravado, neto + neto2 + neto3 AS "neto", '+
							'iva1_imp + iva2_imp + iva3_imp AS "iva",'+
							'ib_percep,0,\'PES\','+
							'1,fecha_vencimiento, '+
							'iva1.codigo_afip, neto, '+
							'iva1_imp, iva2.codigo_afip, '+
							'neto2, iva2_imp, '+
							'iva3.codigo_afip, neto3, '+
							'iva3_imp, neto_no_gravado, '+
							'cab.letra, cab.tipo_doc, '+
							'cab.cabecera_id, ib_percep_porc ' +
					'FROM fac_cabecera "cab" '+
					'JOIN tipo_doc_afip "afip" ON cab.letra = afip.letra AND cab.tipo_doc = afip.tipo_doc '+
					'JOIN clientes "cli" ON cli.cliente_id = cab.cliente_id '+
					'LEFT JOIN tasa_iva "iva1" ON cab.iva1_porc = iva1.tasa_iva_porc '+
					'LEFT JOIN tasa_iva "iva2" ON cab.iva2_porc = iva2.tasa_iva_porc '+
					'LEFT JOIN tasa_iva "iva3" ON cab.iva3_porc = iva3.tasa_iva_porc '+
					'LEFT JOIN fac_conceptos "concepto" ON cab.fac_concepto_id = concepto.fac_concepto_id '+	
					'WHERE fac_estado = ? AND cab.userv_id = ? '+
					'ORDER BY afip.codigo, sucursal,  nro_factura'
	var $args 	= [globals.gFacturaPendienteCae, globals.gUservID]
	var $ds 	= databaseManager.getDataSetByQuery('infocom',$sql,$args,-1)
	
	return $ds
}

/**
 * @properties={typeid:24,uuid:"8996E767-2975-4648-98A2-C6C59F5B885E"}
 */
function verificar_cae(pArchivo) {
	var fr = new Packages.java.io.FileReader(pArchivo);
	var br = new Packages.java.io.BufferedReader(fr);
	
	var linea = br.readLine()
	if (linea == null)
	{
		globals.DIALOGS.showWarningDialog('Error','Error al leer linea - método verificar_cae - ' + pArchivo,'OK')
		return 1
	}
	else
	{
		
		globals.gTipoCbte = utils.stringToNumber(linea.substring( 9, 11))
		globals.gNroCbte  = utils.stringToNumber(linea.substring( 15, 23))
		if (linea[193] != "A")
		{
			globals.DIALOGS.showWarningDialog('Error','Comprobante rechazado - método verificar_cae - ' + globals.gTipoCbte + ' - ' + globals.gNroCbte,'OK')
			return 1	
		}
		else
		{
			globals.gCae    		 = linea.substring( 171, 185)
			globals.gFechaVtoCae  	 = linea.substring( 185, 193)
		}
	}
	br.close();
	fr.close();
	return 0
}

/**
 * @properties={typeid:24,uuid:"67E08CD4-D636-4FD6-B6B1-325379BC773C"}
 */
function gGrabarLog(tipo_cbte, nro_cbte, cae, arch, salida, logfile, fechavto_cae, pto_venta) {
	/** @type {JSFoundSet<db:/factura_electronica/log_operaciones>} */
	var fslog = databaseManager.getFoundSet("factura_electronica","log_operaciones")
	fslog.newRecord()
	fslog.tipo_cpbte		= tipo_cbte
	fslog.punto_vta			= pto_venta
	fslog.numero_cpbte		= nro_cbte
	fslog.cae				= cae
	if (fechavto_cae)
		fslog.fechavto_cae	= new Date(fechavto_cae.substr(0,4)*1,fechavto_cae.substr(4,2)*1,fechavto_cae.substr(6,2)*1)
	fslog.nom_archivo		= arch
	fslog.salida_recibida	= salida
	fslog.logfile_recibido	= logfile
	fslog.empresa_id		= globals.gUservID
	
	var estado = databaseManager.saveData()
	if (estado == false)
	{
		databaseManager.revertEditedRecords()
		globals.DIALOGS.showWarningDialog('Aviso','Error al grabar Log','OK')
		return 1
	}
	return 0
}

/**
 * 
 * @return {Object}
 * @properties={typeid:24,uuid:"1C24C048-EF57-4B97-8E5D-F47766E8391B"}
 */
function gCodigo_afip() {

	//CUIT: Filtro los guiones dentro del campo
	/** @type {String} */
	var $cuit = guserv_to_uservs.cuit.replace('-','')
	while ($cuit.indexOf('-') != -1)
	{
		$cuit = $cuit.replace('-','')
	}
	
	$cuit = $cuit
	
	if ($cuit.length != 11)
	{
		globals.DIALOGS.showWarningDialog('Error','Error en longitud CUIT: ' + $cuit,'OK')
		return 1
	}
	
	//TIPO_DOC: tengo que agregarle un 0 antes de poner el tipo_doc
	var $tipo_doc = globals.gTipo_doc
	if ($tipo_doc.length != 2)
	{
		globals.DIALOGS.showWarningDialog('Error','Error en longitud tipo_doc: ' + $tipo_doc,'OK')
		return 1
	}
		
	//SUCURSAL
	var $sucursal = globals.gSucursal
	if ($sucursal.length != 4)
	{
		globals.DIALOGS.showWarningDialog('Error','Error en longitud sucursal: ' + $sucursal.length ,'OK')
		return 1
	}
	//CAI
	var $cai = globals.gCae
	if ($cai.length != 14)
	{
		globals.DIALOGS.showWarningDialog('Error','Error en longitud CAE: ' + $cai.length ,'OK')
		return 1
	}
	var $fecha_venc = globals.gFechaVtoCae
	if ($fecha_venc.length != 8)
	{
		globals.DIALOGS.showWarningDialog('Error','Error en longitud fecha vto cae' + $fecha_venc.length ,'OK')
		return 1
	}
		
	//DIGITO VERIFICADOR: segun reglas de AFIP
	var $cod_final 		= $cuit.concat($tipo_doc.concat($sucursal.concat($cai.concat($fecha_venc))))
	var $digito_verif 	= globals.gRutinaDigVerif($cod_final)
	//concateno todo en el campo CodigoAFIP de la tabla
	$cod_final =  $cod_final.concat(''+$digito_verif)
	if ($cod_final.length != 40)
	{
		globals.DIALOGS.showWarningDialog('Error','Error en longitud código final: ' + $cod_final.length ,'OK')
		return 1
	}
	return $cod_final
}

/**
 * @properties={typeid:24,uuid:"7097F236-BB62-4C95-A946-CA451707C132"}
 */
function gRutinaDigVerif(cod) {
	var res
	var pares = 0, impares = 0
	//var cod = arguments[0]
	var i, n
	
	i = 0
	while (i<38)
	{	
		n = utils.stringToNumber(cod[i])
		impares += n
		n = utils.stringToNumber(cod[i+1])
		pares += n
		i += 2
	}
	n = utils.stringToNumber(cod[i])
	impares += n
	res = impares *3
	res += pares
	res = 10 - (res % 10)
	if (res == 10)
		res = 0
	return res
}

/**
 * Callback method for when solution is opened.
 * When deeplinking into solutions, the argument part of the deeplink url will be passed in as the first argument
 * All query parameters + the argument of the deeplink url will be passed in as the second argument
 * For more information on deeplinking, see the chapters on the different Clients in the Deployment Guide.
 *
 * @param {String} arg startup argument part of the deeplink url with which the Client was started
 * @param {Object<Array<String>>} queryParams all query parameters of the deeplink url with which the Client was started
 *
 * @properties={typeid:24,uuid:"3A0969E7-670E-4A2C-8520-912069C348E1"}
 */
function onSolutionOpen(arg, queryParams) {
	globals.gUservID = security.getUserUID()
	databaseManager.addTableFilterParam('infocom',null,'userv_id','=',globals.gUservID,'FILTRO_USERV')
	globals.gRelacion 	= guserv_to_uservs
	globals.gCampos 	= 'elec'
}

/**
 * @param {String} texto
 * @param {Number} cantidad
 * @param {String} [orientacion]
 *
 * @properties={typeid:24,uuid:"1B9F2F7D-DA4A-49AE-83B6-0B2907B08249"}
 */
function rellenar(texto, cantidad, orientacion)
{
	if (!texto)
		texto = ' '
	
	if (!cantidad || cantidad < 0)
		return texto
	
	if (texto.length >= cantidad)
	{
		return texto.substr(0,cantidad)
	}
		
	while (texto.length < cantidad)
	{
		if (orientacion == 'izq')
		{
			texto = ' ' + texto
		}
		else
		{
			texto += ' '
		}
	}
	return texto
}

/**
 * @param {Array<Object>} factura
 * 
 * @return {Object}
 * @properties={typeid:24,uuid:"0EB351F0-3EA1-40F8-9042-22AA0B9C8DBD"}
 */
function procesarComprobante(factura) {
	//pasa una cabecera de factura
	/** @type {String}*/
	var $linea 	= '' + factura[0] //tipo_reg
	$linea		+= utils.dateFormat(factura[1],'yyyyMMdd') //fecha_cbte
	$linea		+= utils.numberFormat(factura[2],'00') //tipo_cbte
	$linea		+= utils.numberFormat(factura[3],'0000') //punto_vta
	$linea		+= utils.numberFormat(factura[4],'00000000')//cbt_desde
	$linea		+= utils.numberFormat(factura[5],'00000000')//cbt_hasta
	$linea		+= factura[6]//concepto
	$linea		+= utils.numberFormat(factura[7],'00')//tipo_doc
	$linea		+= utils.numberFormat(rellenar(utils.stringToNumber(factura[8]),11),'00000000000')//nro_doc
	$linea		+= utils.numberFormat(factura[9] * 100,'000000000000000')//imp_total
	$linea		+= utils.numberFormat(factura[10],'000000000000000')//no_usar
	$linea		+= utils.numberFormat(factura[11] * 100,'000000000000000')//imp_tot_conc
	$linea		+= utils.numberFormat(factura[12] * 100,'000000000000000')//imp_neto
	$linea		+= utils.numberFormat(factura[13] * 100,'000000000000000')//imp_iva
	$linea		+= utils.numberFormat(factura[14] * 100,'000000000000000')//imp_trib
	$linea		+= utils.numberFormat(factura[15],'000000000000000')//imp_op_ex
	$linea		+= factura[16] //moneda_id
	$linea		+= utils.numberFormat(factura[17] * 1000000,'0000000000')  //moneda_ctz (por ahora siempre es 1 pq es solo en PESOS)
	if (factura[6] == 1)
	{
		$linea		+= '00000000' //fecha_venc_pago
	}
	else
	{
		$linea		+= utils.dateFormat(factura[18],'yyyyMMdd') //fecha_venc_pago
	}
	$linea		+= rellenar(' ', 14) //cae
	$linea		+= rellenar(' ', 8) //fch_venc_cae
	$linea		+= ' ' //resultado
	$linea		+= rellenar(' ', 1000)//motivos_obs (son 1000 caracteres)
	$linea		+= rellenar(' ', 6) //err_code
	$linea		+= rellenar(' ', 1000) //err_msg	(1000 caraceteres)
	$linea		+= ' ' //reproceso
	$linea		+= rellenar(' ', 4) //emision_tipo
	$linea		+= rellenar(' ', 8) //fecha_serv_desde
	$linea		+= rellenar(' ', 8) //fecha_serv_hasta
	
	if ($linea.length != 2221)
		return -1
	
	var fr = new Packages.java.io.FileWriter(globals.gArchEntrada);
	var br = new Packages.java.io.BufferedWriter(fr);

	br.write($linea)
	
	//IIBB - REGISTRO 1
	if (factura[32] && factura[14])
	{
		$linea = '1' //tipo_reg
		$linea += rellenar('2',16)
		$linea += rellenar('Percepción de Ingresos Brutos',100)
		$linea += utils.numberFormat(factura[12]*100,'000000000000000') //base_imp
		$linea += utils.numberFormat(factura[32]*100,'000000000000000') //porcentaje
		$linea += utils.numberFormat(factura[14]*100,'000000000000000') //importe
		br.newLine()
		br.write($linea)
	}
	
	//IVA - REGISTRO 2
	if (factura[19] && factura[21] != 0)
	{
		$linea = '2' //tipo_reg
		$linea += utils.numberFormat(factura[19],'0000000000000000') //iva_id 
		$linea += utils.numberFormat(factura[20]*100,'000000000000000') //base_imp
		$linea += utils.numberFormat(factura[21]*100,'000000000000000') //importe
		if ($linea.length != 47)
		{
			br.close()
			fr.close()
			plugins.file.deleteFile(globals.gArchEntrada)
			return -1
		}
		br.newLine()
		br.write($linea)
		if (factura[22] && factura[24] != 0)
		{
			$linea = '2' //tipo_reg
			$linea += utils.numberFormat(factura[22],'0000000000000000') //iva_id 
			$linea += utils.numberFormat(factura[23]*100,'000000000000000') //base_imp
			$linea += utils.numberFormat(factura[24]*100,'000000000000000') //importe
			if ($linea.length != 47)
			{
				br.close()
				fr.close()
				plugins.file.deleteFile(globals.gArchEntrada)
				return -1
			}
			br.newLine()
			br.write($linea)
			if (factura[25] && factura[27] != 0)
			{
				$linea = '2' //tipo_reg
				$linea += utils.numberFormat(factura[25],'0000000000000000') //iva_id 
				$linea += utils.numberFormat(factura[26]*100,'000000000000000') //base_imp
				$linea += utils.numberFormat(factura[27]*100,'000000000000000') //importe
				if ($linea.length != 47)
				{
					br.close()
					fr.close()
					plugins.file.deleteFile(globals.gArchEntrada)
					return -1
				}
				br.newLine()
				br.write($linea)
			}
		}
	}
	if (factura[28] != 0)
	{
		//NETO NO GRAVADO
		$linea = '2' //tipo_reg
		$linea += utils.numberFormat(1,'0000000000000000') //iva_id 
		$linea += utils.numberFormat(factura[28]*100,'000000000000000') //base_imp
		$linea += utils.numberFormat(0,'000000000000000') //importe
		if ($linea.length != 47)
		{
			br.close()
			fr.close()
			plugins.file.deleteFile(globals.gArchEntrada)
			return -1
		}
		br.newLine()
		br.write($linea)
	}
	br.close()
	fr.close()
	return 1
}
